<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>迷路的机器人</title>
</head>
<body>
  <script>
    function fn(obstacleGrid) {
      const m = obstacleGrid.length, n = obstacleGrid[0].length;
      const res = [];
      let flag = false; //标记是否找到目的地
      function dfs(x, y, obstacleGrid) {
        if (x < 0 || x >= m || y < 0 || y >= n || obstacleGrid[x][y] === 1) return;//不能到达的方格
        res.push([x, y]);
        obstacleGrid[x][y] = 1; //每个点最多处理一次，因此第一次处理过的点都作个标记
        if (x === m - 1 && y === n - 1) flag = true; //成功找到目的地就作标记
        if (!flag) dfs(x + 1, y, obstacleGrid); //未到达目的地就试着往下走
        if (!flag) dfs(x, y + 1, obstacleGrid); //未找到目的地就试着往右走
        if (!flag) res.pop(); //往右往下走都没到达目的地，说明该点无效，作移除
      }
      dfs(0, 0, obstacleGrid)
      return res
    }
    console.log(fn([[0, 0, 0], [0, 1, 0], [0, 0, 0]]))
  </script>
</body>
</html>